const fs = require('fs');
const images = require("images");
const TextToSVG = require("text-to-svg");
const svg2png = require("svg2png");
const Promise = require("bluebird");
const path = require("path");
const imgPath = (value) => { return path.join(__dirname, value) };
const moment = require('moment');

Promise.promisifyAll(fs);

// 引入默认背景图
const sourceImg = images(imgPath('./images/bj.png'));
//  二维码路径
const QRCode = './images/QRCode.jpg'

// 设置字体颜色以及基准点
const textBoldToSVG = TextToSVG.loadSync(imgPath('./font/字魂70号-灵悦黑体.ttf'));
let fontColor = {
    fill: '#fff',
    stroke: '#fff'
}
const svg1 = textBoldToSVG.getSVG('押韵很简单', {
    x: 0,                       // 文本开头的水平位置（默认值：0）
    y: 0,                       // 文本的基线的垂直位置（默认值：0）
    fontSize: 40,               // 文本的大小
    // letterSpacing: "",          // 设置字母的间距
    anchor: 'top',              // 坐标中的对象锚点
    attributes: {
        fill: '#fff',
        stroke: '#000'
    }
});
const svg2 = textBoldToSVG.getSVG('扫码打开小程序', {
    x: 0,
    y: 0,
    fontSize: 20,
    anchor: 'top',
    attributes: fontColor
});
const svg3 = textBoldToSVG.getSVG(`${moment().format('YYYY.MM.DD')}`, {
    x: 0,
    y: 0,
    fontSize: 20,
    anchor: 'top',
    attributes: fontColor
});
const text1 = svg1.replace(`xmlns="http://www.w3.org/2000/svg"`, `fill="#fff" xmlns="http://www.w3.org/2000/svg"`);
const text2 = svg2.replace(`xmlns="http://www.w3.org/2000/svg"`, `fill="#fff" xmlns="http://www.w3.org/2000/svg"`);
const text3 = svg3.replace(`xmlns="http://www.w3.org/2000/svg"`, `fill="#fff" xmlns="http://www.w3.org/2000/svg"`);


async function createImage() {
    await Promise.coroutine(function* generateInvitationCard() {
        // 临时图片路径
        const text1Path = './temporary/1.png';
        const text2Path = './temporary/2.png';
        const text3Path = './temporary/3.png';

        // 转buffer
        const [buffer1, buffer2, buffer3] = yield Promise.all([
            svg2png(text1),
            svg2png(text2),
            svg2png(text3),
        ]);

        // buffer写入图片到临时路径
        yield Promise.all([
            fs.writeFileAsync(text1Path, buffer1),
            fs.writeFileAsync(text2Path, buffer2),
            fs.writeFileAsync(text3Path, buffer3),
        ]);

        // 写入图片
        // draw(图片， X轴，Y轴)
        images(sourceImg)
            .draw(images(text1Path), 60, 80)
            .draw(images(text2Path), 95, 310)
            .draw(images(text3Path), 180, 435)
            .draw(images(QRCode).size(100), 112, 200) //size调整二维码大小
            .save('./poster/poster.png', {                  // 将图像保存到一个文件中，质量为90
                quality: 90
            });
    })().catch(e => {
        console.error(e)
    });
    console.log("图片生成完毕，前往./poster查看")
}

createImage()

